﻿// aa.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stats.h"
#define ILOG LOG<<L_INFO

#define writeln(x) cout<<(x)<<endl;








#pragma warning(disable : 4244)


std::string WStringToString(std::wstring s)
{
std::string temp(s.length(), ' ');
std::copy(s.begin(), s.end(), temp.begin());
return temp;
}




int main(int argc, char **argv)
{
	string isOK;
	LOG.AssignFile("Statystyki.html");



locale myloc ("Polish");
locale oldloc = locale::global (myloc);
	


HINTERNET a,b;


	GetInfo *info = new GetInfo();
	

	cout<<"|------------------------------------------------------------------------------|"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|   Test komputera -> Silver Games Engine <-                                   |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|   Program ten ma za zadanie pobrac podstawowe informacje na temat twojego    |"<<endl;
	cout<<"|   komputera, informacje te sa potrzebne do pozniejszej dokladnej analizy     |"<<endl;
	cout<<"|   sprzetu ktory bedzie potrzebny do uruchomienia gry, informacje ktore       |"<<endl;
	cout<<"|   wyplyna poza twoj komputer NIE BEDA W ZADEN SPOSOB udostepnione.           |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|               Strona projektu: www.psrebniak.comeze.com/SGE/                 |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|------------------------------------------------------------------------------|"<<endl;

	system("PAUSE");
	system("cls");
		
	cout<<"Krok 1 : Pobieranie Informacji ..."<<endl;
	cout<<"         Może to potrwac chwile..."<<endl;

	
	info->IOS();
	info->CMP();	
	info->VRam();
	info->CPU();
	info->VCRD();
	info->HDD();
	
	system("cls");
	cout<<"Krok 1 : Zakończono pobieranie informacji."<<endl;
	
	

	cout<<"Krok 1 : Jeżli jesteś gotów aby przejść do następnego kroku wciśnij dowolny klawisz ."<<endl;
	system("PAUSE");
	system("cls");
	cout<<"|------------------------------------------------------------------------------"<<endl;
	cout<<"| 0. Ogólne Informacje:                                                        "<<endl;
	cout<<"|           -> Płyta Główna         : "<<WStringToString(info->oCMP.Manufacturer)<<endl;
	cout<<"|           -> Model Płyty Głównej  : "<<WStringToString(info->oCMP.Model)<<endl;
	cout<<"|           -> Nazwa Komputera      : "<<WStringToString(info->oCMP.Hostname)<<endl;
	cout<<"|           -> Grupa Robocza        : "<<WStringToString(info->oCMP.Workgroup)<<endl; 
	cout<<"|           -> Adres komputera      : "<<WStringToString(info->oCMP.Ip)<<endl; 
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"| 1. System Operacyjny:                                                         "<<endl;
	cout<<"|           -> Wersja               : "<<WStringToString(info->oIOS.productName)<<endl;      
	cout<<"|           -> Architektura Systemu : "<<WStringToString(info->oIOS.OsArchitecture)<<endl;  
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"| 2. Procesor:                                                                  "<<endl;
	cout<<"|           -> Model                : "<<WStringToString(info->oCPU.Manufacturer)<<endl;
	cout<<"|           -> Ilość rdzeni         : "<<info->oCPU.NumberOfCore<<endl;
	cout<<"|           -> Prędkość             : "<<info->oCPU.CurrentClockSpeed<<" GHz"<<endl;
	cout<<"|           -> Podstawka            : "<<WStringToString(info->oCPU.SocketDesignation)<<endl;
	cout<<"|           -> Taktowanie FSB       : "<<info->oCPU.ExtClock<<" MHz"<<endl;
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"| 3. Pamięć RAM:                                                                "<<endl;
	cout<<"|           -> Pojemność : "<<info->oVRam.Capacity <<" MB"<<endl;
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"| 4. Karta graficzna:                                                           "<<endl;
	cout<<"|           -> Producent            : "<<WStringToString(info->oVCRD.Producer)<<endl;
	cout<<"|           -> Model                : "<<WStringToString(info->oVCRD.Model)<<endl;
	cout<<"|           -> Pamieć               : "<<info->oVCRD.Ram<<" MB"<<endl;
	cout<<"|           -> Rozdzielczość        : "<<info->oVCRD.v<<" x "<<info->oVCRD.h<<" : "<<info->oVCRD.bpp<<" bity"<<" @ "<<info->oVCRD.refresh<<"Hz"<<endl;
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"| 5. Dysk :                                                                     "<<endl;
	cout<<"|           -> Ilość Partycji       : "<<info->oHDD.Partitions<<endl;
	cout<<"|           -> Firma / Model        : "<<WStringToString(info->oHDD.Model)<<endl;
	cout<<"|           -> Interfejs            : "<<WStringToString(info->oHDD.Interface)<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|______________________________________________________________________________|"<<endl;
	cout<<"Krok 1 : Zakończono.."<<endl;
	system("PAUSE");
	system("cls");
	
	cout<<"Krok 2 : Tworzenie pliku XHTML ..."<<endl;
	cout<<"         Może to potrwac chwile..."<<endl;


ILOG<<"0. Ogólne Informacje:"<<ENDL;
ILOG<<"-> Płyta Główna     : "<<WStringToString(info->oCMP.Manufacturer)<<ENDL;
ILOG<<"-> Model: "<<WStringToString(info->oCMP.Model)<<ENDL;
ILOG<<"-> Nazwa Komputera  : "<<WStringToString(info->oCMP.Hostname)<<ENDL;
ILOG<<"-> Grupa Robocza    : "<<WStringToString(info->oCMP.Workgroup)<<ENDL;
LOG.Write();

ILOG<<"1. System Operacyjny:"<<ENDL;
ILOG<<"-> Wersja               : "<<WStringToString(info->oIOS.productName)<<ENDL;
ILOG<<"-> Architektura Systemu : "<<WStringToString(info->oIOS.OsArchitecture)<<ENDL;
LOG.Write();


ILOG<<"2. Procesor:"<<ENDL;
ILOG<<"-> Model         : "<<WStringToString(info->oCPU.Manufacturer)<<ENDL;
ILOG<<"-> Ilosc rdzeni  : "<<info->oCPU.NumberOfCore<<ENDL;
ILOG<<"-> Prędkosc      : "<<info->oCPU.CurrentClockSpeed<<" GHz"<<ENDL;
ILOG<<"-> Podstawka     : "<<WStringToString(info->oCPU.SocketDesignation)<<ENDL;
ILOG<<"-> Taktowanie FSB: "<<info->oCPU.ExtClock<<" MHz"<<ENDL;
LOG.Write();

ILOG<<"3. Pamięć RAM:"<<ENDL;
ILOG<<"-> Pojemnosc : "<<info->oVRam.Capacity <<" GB"<<ENDL;
LOG.Write();



ILOG<<"4. Karta graficzna:"<<ENDL;
ILOG<<"-> Producent          : "<<WStringToString(info->oVCRD.Producer)<<ENDL;
ILOG<<"-> Model              : "<<WStringToString(info->oVCRD.Model)<<ENDL;
ILOG<<"-> Pamiec             : "<<info->oVCRD.Ram<<" MB"<<ENDL;
ILOG<<"-> Rozdzielczosc      : "<<info->oVCRD.v<<" x "<<info->oVCRD.h<<" : "<<info->oVCRD.bpp<<" bity"<<" @ "<<info->oVCRD.refresh<<" Hz"<<ENDL;
LOG.Write();


ILOG<<"5. Dysk :"<<ENDL;
ILOG<<"-> Ilosc Partycji     : "<<info->oHDD.Partitions<<ENDL;
ILOG<<"-> Firma / Model      : "<<WStringToString(info->oHDD.Model)<<ENDL;
ILOG<<"-> Interfejs          : "<<WStringToString(info->oHDD.Interface)<<ENDL;
LOG.Write();

	cout<<"Krok 2 : Zakończono.."<<endl;
	Sleep(2000);
	system("cls");
	
	cout<<"Krok 3 : Czy konfiguracja pokazana przed chwilą zgadzała się z twoją konfiguracją komputera??"<<endl;
	cout<<"TIP: wpisz wielkimi literami \' TAK \' lub \' NIE \'"<<endl;
		// dalej jeżeli tak lub nie!!!
		
		do
		{
		cin>>isOK;
		}while(!isOK.empty() && !(isOK == "TAK" || isOK == "NIE") );
		if(isOK == "NIE")
		{
			cout<<"Dziękuję, że zdecydowałeś się zgłosić nie ścisłości z pobieranymi danymi."<<endl;
			cout<<"W celu szybszej eliminacji błędów proszę trzymać się poniższego szablonu:"<<endl;
			writeln("znaki \'<\' oraz \'>\' należy pominąć");
			writeln("Moduł : <numer modułu>");
			writeln("Podpunkt : <nazwa podpunktu>");
			writeln(" w tym miejscu należy napisać krótki opis jaka wartość była błędnie odczytana");
			writeln("------------------------------------------------------------------------------");
			writeln("Przykład");
			writeln("Moduł : 0");
			writeln("Podpunkt : Model");
			writeln(" Program pokazuje inną nazwę płyty niż posiadam");
			writeln("Podpunkt : Nazwa Komputera");
			writeln(" Program pokazuje połączone nazwy zalogowanych użytkownikow..");
			
			writeln("Aby zakończyć edycje szablonu wpissz \'/exit\'");


			string data; // to co wpisuje user

			string bufor;
			LOG<<L_WARNING;
			do {
				data.clear();
			cin>>data;
			if(data != "/exit") {LOG<<data<<ENDL;} else {break;}
			} while(!data.empty() && !(data == "/exit"));
			writeln("Dziękuję za zgłoszenie...");

			LOG.Write();

		} 
		
		
	system("cls");
	
	
	
LOG.~Logger();
	
cout<<"Rozpoczynam wysyłanie pliku na serwer...."<<endl<<"Może to potrwać chwilkę... bądź wytrwały "<<endl;
				std::string name;
				name+=WStringToString(info->oCMP.Hostname);
				name+=WStringToString(info->oCMP.Workgroup);
				name+=".html";
				
a = InternetOpen(L"aa",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC); 
if(a == NULL)
{
	cout<<"Nie mogę połączyć się z serwerem...."<<endl;
	cout<<"Błąd 0x"<<GetLastError();
	system("PAUSE");
	return 1;

}
b = InternetConnect(a ,L"127.0.0.1",INTERNET_DEFAULT_FTP_PORT, L"statystyki",L"stats",INTERNET_SERVICE_FTP,0,0);
if(b == NULL)
{
	cout<<"dupa blada ... nie ma interneta !!!"<<endl;
	cout<<"BBBBBBBBBB:  "<<GetLastError();
	system("PAUSE");
	return 1;

}
	if(a != NULL && b != NULL)
	{
				if(!FtpPutFile(b,L"Statystyki.html", (LPCWSTR)name.c_str(), FTP_TRANSFER_TYPE_ASCII,NULL))					
				{
					cout<<GetLastError();
							cout<<"Nie mogę wysłać pliku na serwer..."<<endl;
				}
	}
//	if(!b) InternetCloseHandle(b);
	cout<<"Krok 4 : Zakończono.."<<endl;
	


	cout<<"|------------------------------------------------------------------------------|"<<endl;
	cout<<"|  Wiecej informacji na temat projektu bezposrednio na stronie autora:         |"<<endl;
	cout<<"|                      psrebniak.comeze.com                                    |"<<endl;
	cout<<"|                                                                              |"<<endl;
	cout<<"|     lub pod numerem GG : 11761036                                            |"<<endl;
	cout<<"|______________________________________________________________________________|"<<endl;
	


	






//	locale::global (oldloc);
	system("PAUSE");

    return 0;   // Program successfully completed.
}


